# 求圆的面积
# 数学公式：Πr平方

# 在程序中使用数学公式的思维

# 第一次求圆的面积：半径为5的圆的面积
# radius = float(input("输入一个半径:"))
# area = 3.14 * radius * radius   # 幂运算：radius ** 2
# print(area)

# 运行.....很多行代码

# 第二次求圆的面积：求半径为7的圆的面积：
# 想法：能不能把7-9行的代码进行复用
# radius = float(input("输入一个半径:"))
# area = 3.14 * radius * radius   # 幂运算：radius ** 2
# print(area)

# 如果我需要提高半径的精度，就要修改所有获取半径的代码：修改2次
# 如果修改次数提升，工作量提升

# 函数：将某个特定功能的代码段进行封装，方便代码的复用和维护
# 如何定义一个函数？
# 函数5部分组成：def、函数名、参数、函数体、return

# 如果要修改函数功能，只需要修改函数体1次

# 定义一个求圆的面积的函数：
pi = 3.1415926  # 圆周率
# 全局变量：声明在函数体外的变量，可以在任意地方被使用（作用域）
# 作用域：变量使用的范围
def circle_area(radius):    #形参：形式参数，定义函数时的参数
    # 现象：area变量没办法在函数结构外找到
    area = 3.14 * radius * radius
    # 局部变量：定义在函数体内的变量，只能在函数体内使用（作用域）
    # 问题：在程序中没法使用函数求得的圆的面积
    # print(area)
    return area

# 实参：实际参数，使用函数时候的参数
print(circle_area(5))   # 求半径为5的圆的面积
# 如果只使用函数返回值一次，可以不适应变量保存

area_r_7 = circle_area(7)  # 求半径为7的圆的面积
# 如果使用函数返回值多次，需要用变量进行存储
print(area_r_7)

# 好处：执行某个功能不再关注功能的实现，而是关注使用什么函数实现功能